<?php
/**
 * @author Cyril Gabathuler
 * @since version - 05.06.2007
 */

 class Util {
 	public static function cutName($name) {
 		$names = explode(' ', $name);
 		return $names;
 	}

 	public static function calculateGeburtstag($jahre, $tage) {
		$days = (116*$jahre) + $tage;
		$geburtstag = strtotime('-'.$days.' days');
		return $geburtstag;
 	}

 	public static function calculateAlter($geburtstag) {
 		$jahre = (date('Y') - date('Y', $geburtstag));
 		$zusatzTage = 0;
 		for($i=0; $i<$jahre; $i++) {
			if(date('L', $geburtstag)=='1') {
				$zusatzTage+=1;
				if($i==0 && date('d-M', $geburtstag)>'29-02')
					$zustatzTage-=1;
				if($i==$jahre-1 && date('d-M', $geburtstag)<='29-02') {
					$zustatzTage-=1;
				}
			}

			$geburtstag = strtotime('+1 year', $geburtstag);
 		}
 		$tage = (date('z')+10 - date('z', $geburtstag)) + ($jahre*365) + $zusatzTage;

 		$alter['jahre'] = floor($tage/116);
 		$alter['tage'] = $tage%116;

		return $alter;
 	}

 	public static function getSpielerBestePosition($sid) {
 		if(Util::spielerSchonGespielt($sid) == "false") {
			return "Noch nicht gespielt";
 		}
		global $Manager;
		$BestePositionSterne = Util::getSpielerBesteSpielPositionSterne($sid);
		if(count($BestePositionSterne) == 1) {
			return $Manager->getTable('spielposition')->find($BestePositionSterne[0]->spielposition_id)->bezeichnung;
		} else {
			$BestePositionForm = Util::getSpielerBesteSpielPositionForm($BestePositionSterne);
			return $Manager->getTable('spielposition')->find($BestePositionForm[count($BestePositionForm)-1]->spielposition_id)->bezeichnung;
		}
	}

	public static function getSpielerBestesSpiel($sid) {
		if(Util::spielerSchonGespielt($sid) == "false") {
			return "Noch nicht gespielt";
 		}
		global $Manager;
		$BestesSpielSterne = Util::getSpielerBesteSpielPositionSterne($sid);
		if(count($BestesSpielSterne) == 1) {
			$sterne = $Manager->getTable('bewertung')->find($BestesSpielSterne[0]->bewertung_id)->sterne;
			$datum = $Manager->getTable('spiel')->find($BestesSpielSterne[0]->spiel_id)->datum;
			$gegner = $Manager->getTable('spiel')->find($BestesSpielSterne[0]->spiel_id)->gegner;
			return $sterne." Sterne (Spiel ".date('d.m.Y', strtotime($datum))." gegen ".$gegner.")";
		} else {
			$BestesSpielForm = Util::getSpielerBesteSpielPositionForm($BestesSpielSterne);
			$sterne = $Manager->getTable('bewertung')->find($BestesSpielForm[count($BestesSpielForm)-1]->bewertung_id)->sterne;
			$datum = $Manager->getTable('spiel')->find($BestesSpielForm[count($BestesSpielForm)-1]->spiel_id)->datum;
			$gegner = $Manager->getTable('spiel')->find($BestesSpielForm[count($BestesSpielForm)-1]->spiel_id)->gegner;
			return $sterne." Sterne (Spiel ".date('d.m.Y', strtotime($datum))." gegen ".$gegner.")";
		}
	}

	private static function getSpielerBesteSpielPositionSterne($sid) {
		global $Manager;
		$Query = new Doctrine_Query();
		$Params = array(":spielerid" => $sid);
		$Aufstellungen = $Query->select( "a.*" )
			->from( "spieleraufstellung a" )
			->where( "spieler_id = :spielerid", $Params )
			->execute();
		$besteBewertung = array();
		foreach($Aufstellungen as $Aufstellung) {
			$Bewertung = $Manager->getTable('bewertung')->find($Aufstellung->bewertung_id);
			if($besteBewertung[0]['bewertung'] < $Bewertung->sterne) {
				$besteBewertung = array(array("aufstellung" => $Aufstellung, "bewertung" => $Bewertung->sterne));
			} else if($besteBewertung[0]['bewertung'] == $Bewertung->sterne) {
				$besteBewertung[] = array("aufstellung" => $Aufstellung, "bewertung" => $Bewerbung->sterne);
			}
		}
		$return = array();
		foreach($besteBewertung as $arr) {
			$return[] = $arr['aufstellung'];
		}
		return $return;
	}

	private static function getSpielerBesteSpielPositionForm($arr) {
		global $Manager;
		$besteForm = array();
		foreach($arr as $Aufstellung) {
			$Form = $Manager->getTable('form')->find($Aufstellung->form_id);
			if($besteForm[0]['wertung'] > $Form->wertung || $besteForm[0] == null) {
				$besteForm = array(array("aufstellung" => $Aufstellung, "wertung" => $Form->wertung));
			} else if($besteForm[0]['wertung'] == $Form->wertung) {
				$besteForm[] = array("aufstellung" => $Aufstellung, "wertung" => $Form->wertung);
			}
		}
		$return = array();
		foreach($besteForm as $arr) {
			$return[] = $arr['aufstellung'];
		}
		return $return;
	}

	public static function spielerSchonGespielt($sid) {
		$spielerMitSpielen = "false";
		$Query = new Doctrine_Query();
		$Params = array(":sid" => $sid);
		$Spieler = $Query->select( "s.*" )
			->from( "Spieler s" )
			->where( "s.id = :sid", $Params )
			->execute();

		foreach($Spieler as $EinSpieler) {
			$Query = new Doctrine_Query();
			$Params = array(":sid" => $EinSpieler->id);
			$Aufstellungen = $Query->select( "a.*" )
				->from( "SpielerAufstellung a" )
				->where( "a.spieler_id = :sid", $Params )
				->execute();
			if(count($Aufstellungen) > 0) {
				$spielerMitSpielen = "true";
			}
		}
		return $spielerMitSpielen;
	}

	public static function getAllSpielerSchonGespielt() {
		$Query = new Doctrine_Query();
		$Params = array(":mid" => Util::getMannschaftId());
		$Spieler = $Query->select( "s.id" )
			->from( "Spieler s" )
			->where( "s.mannschaft_id = :mid", $Params )
			->execute();
		$gespielt = "false";
		foreach($Spieler as $EinSpieler) {
			$sgespielt = Util::spielerSchonGespielt($EinSpieler->id);
			if($sgespielt == "true") {
				$gespielt = "true";
			}
		}
		return $gespielt;
	}

 	public static function information($text) {
 		$_SESSION['information'] = $text;
 		$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?content=information';
 		echo "<script>";
			echo "window.location = '" .$url."'";
		echo "</script>";
 	}

 	public static function getMannschaftName() {
 		global $Manager;

 		$Params = array
		(
		    ":user_id" => $_SESSION['userid']
		);

		$Query = new Doctrine_Query();
		$Mannschaft = $Query->select( "m.mname")
			->from( "Mannschaft m" )
			->where( "m.user_id = :user_id", $Params )
			->execute();

		return $Mannschaft[0]->mname;
 	}

 	public static function getMannschaftId() {
 		$Params = array(":user_id" => $_SESSION['userid']);
		$Query = new Doctrine_Query();
		$Mannschaft = $Query->select( "m.id")
			->from( "Mannschaft m" )
			->where( "m.user_id = :user_id", $Params )
			->execute();

		return $Mannschaft[0]->id;
 	}
 }
?>
